"use client"; import { useQuery } from "@tanstack/react-query"; import { Download, FileText } from "lucide-react"; import Link from "next/link"; import { useParams } from "next/navigation"; import { useState } from "react"; import { StatusBadge } from "../../page"; import { LinesChart } from "@/components/charts"; import { BenchmarkTable, EquityVsBenchmarks, MetricsGrid, Provenance, RejectedOrders, RollingSharpe, SensitivityHeatmap, ShuffledTrades, StressTable, TradeLedger, Underwater, WalkForward } from "@/components/run-views"; import { Badge, Card, Empty, ErrorBox, PageHeader, Spinner } from "@/components/ui"; import { api } from "@/lib/api"; import { fmtTs } from "@/lib/format"; import type { Run, StrategyMeta } from "@/lib/types"; export default function RunPage() { const { id } = useParams<{ id: string }>(); const run = useQuery({ queryKey: ["run", id], queryFn: () => api(`/api/backtests/${id}`), refetchInterval: (q) => (q.state.data && (q.state.data.status === "done" || q.state.data.status === "failed") ? false : 1_500) }); const strategies = useQuery({ queryKey: ["strategies"], queryFn: () => api<{ items: StrategyMeta[] }>("/api/strategies") }); const [page, setPage] = useState(0); if (run.isLoading) return ; if (run.error) return ; const r = run.data!; const meta = strategies.data?.items.find((s) => s.name === r.strategy); const a = r.artifacts; const m = r.metrics; return ( <> {meta?.experimental && experimental — not validated for live use}{r.label && {r.label}}{r.start_ts && {fmtTs(r.start_ts)} → {fmtTs(r.end_ts)}}} actions={<> Report JSON Trades CSV } /> {r.status === "failed" && } {(r.status === "queued" || r.status === "running") && } {r.status === "done" && a && m && (
{a.holdout ? (
({ ts: p.ts, value: p.equity })) }]} height={200} />
) : Set a holdout fraction > 0 in the Strategy Lab to reserve a final test slice.}
= 2000 ? ", last 2000 shown" : ""})`}> {meta && (

{meta.hypothesis}

{meta.failure_modes.length > 0 &&

Known failure modes: {meta.failure_modes.join(" · ")}

} {meta.references.length > 0 &&

References: {meta.references.join("; ")}

}
)}
)} ); }